Page({

  /**
   * 页面的初始数据
   */
  data: {
    schema: [],
    title: '',
    result: '',
    options: {},
    apiType: '',
    remark: '',
    webUrl: '',
    progressNum: 0,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log('options', options)
    wx.setNavigationBarTitle({
      title: options.title,
    })

    this.setData({
      apiType: options.zh,
      title: options.title,
      zh:options.zh,
      remark: options.remark,
      webUrl: options.webUrl
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },
  downloadFileFunc() {
    let that = this;
    let src = "https://www.cdeledu.com/OtherItem/miniPrivacy/agreement_chinaacc_wx.docx";
    wx.downloadFile({
      url: src,
      success (res) {
        console.log('操作成功', res)
        // 只要服务器有响应数据，就会把响应内容写入文件并进入 success 回调，业务需要自行判断是否下载到了想要的内容
        that.setData({
          result: res
        })
      },
      fail(error) {
        console.log('操作失败', error)
        that.setData({
          result: error
        })
      },
      complete(result) {
        console.log('操作失败之后继续', result)
        that.setData({
          result: result
        })
      }
    })

    // 终止任务 
    // if (type == 2) {
    //   task.abort();
    //   console.log('终止任务', task.abort());
    // }
    
  },
  // 终止下载任务
  downloadFileStopFunc() {
    let that = this;
    let src = "https://product.lvcampaign.com/attached/107/videos/2025-08-20/9d2ed0c1d3954ec5a6c3cca43009a78b.mp4";
    let task = wx.downloadFile({
      url: src,
      success (res) {
        console.log('操作成功', res)
        // 只要服务器有响应数据，就会把响应内容写入文件并进入 success 回调，业务需要自行判断是否下载到了想要的内容
        that.setData({
          result: res
        })
      },
      fail(error) {
        console.log('操作失败', error)
        that.setData({
          result: error
        })
      },
      complete(result) {
        console.log('操作失败之后继续', result)
        that.setData({
          result: result
        })
      }
    })

    // 终止任务 
    setTimeout(() => {
      task.abort();
      console.log('终止任务', task.abort());
    }, 300);
  },
  // 移除下载header监听
  downloadFileDelFunc() {
    let that = this;
    let src = "https://product.lvcampaign.com/attached/107/videos/2025-08-20/9d2ed0c1d3954ec5a6c3cca43009a78b.mp4";
    let task = wx.downloadFile({
      url: src,
      success (res) {
        console.log('操作成功', res)
        // 只要服务器有响应数据，就会把响应内容写入文件并进入 success 回调，业务需要自行判断是否下载到了想要的内容
        // that.setData({
        //   result: res
        // })
      },
      fail(error) {
        console.log('操作失败', error)
        that.setData({
          result: error
        })
      },
      complete(result) {
        console.log('操作失败之后继续', result)
        // that.setData({
        //   result: result
        // })
      }
    })
    const listener = function (res) { 
      console.log('打开 HTTP Response Header 事件的监听函数', res)
      that.setData({
        result: res
      })
    }
    task.onHeadersReceived(listener)
    setTimeout(() => {
      wx.showToast({
        title: '移除 HTTP Response Header 事件的监听函数',
      })
      task.offHeadersReceived(listener)
    }, 300)
  },
  // 打开下载header监听
  downloadFileHeadersFunc() {
    let that = this;
    let src = "https://product.lvcampaign.com/attached/107/videos/2025-08-20/9d2ed0c1d3954ec5a6c3cca43009a78b.mp4";
    let task = wx.downloadFile({
      url: src,
      success (res) {
        console.log('操作成功', res)
        // 只要服务器有响应数据，就会把响应内容写入文件并进入 success 回调，业务需要自行判断是否下载到了想要的内容
        // that.setData({
        //   result: res
        // })
      },
      fail(error) {
        console.log('操作失败', error)
        that.setData({
          result: error
        })
      },
      complete(result) {
        console.log('操作失败之后继续', result)
        // that.setData({
        //   result: result
        // })
      }
    })
    const listener = function (res) { 
      console.log('打开 HTTP Response Header 事件的监听函数', res)
      that.setData({
        result: res
      })
    }
    task.onHeadersReceived(listener)
  },
  // 监听下载进度
  onProgressFunc() {
    let that = this;
    let src = "https://product.lvcampaign.com/attached/107/videos/2025-08-20/9d2ed0c1d3954ec5a6c3cca43009a78b.mp4";
    let task = wx.downloadFile({
      url: src,
      success (res) {
        console.log('操作成功', res)
        // 只要服务器有响应数据，就会把响应内容写入文件并进入 success 回调，业务需要自行判断是否下载到了想要的内容
        that.setData({
          result: res
        })
      },
      fail(error) {
        console.log('操作失败', error)
        that.setData({
          result: error
        })
      },
      complete(result) {
        console.log('操作失败之后继续', result)
        that.setData({
          result: result
        })
      }
    })
    task.onProgressUpdate((res) =>  {
      console.log('监听下载进度', res)
      that.setData({
        progressNum: res.progress
      })
    })
  },
  // 移除监听 
  onProgressRemoveFunc() {
    let that = this;
    let src = "https://product.lvcampaign.com/attached/107/videos/2025-08-20/9d2ed0c1d3954ec5a6c3cca43009a78b.mp4";
    let task = wx.downloadFile({
      url: src,
      success (res) {
        console.log('操作成功', res)
        // 只要服务器有响应数据，就会把响应内容写入文件并进入 success 回调，业务需要自行判断是否下载到了想要的内容
        that.setData({
          result: res
        })
      },
      fail(error) {
        console.log('操作失败', error)
        that.setData({
          result: error
        })
      },
      complete(result) {
        console.log('操作失败之后继续', result)
        that.setData({
          result: result
        })
      }
    })
    let listener = function (res) { 
      that.setData({
        progressNum: res.progress
      })
      console.log('移除下载进度监听', res)
    }
    task.onProgressUpdate(listener)
    // task.offProgressUpdate(listener) // 需传入与监听时同一个的函数对象
    setTimeout(() => {
      wx.showToast({
        title: '移除下载进度监听',
      })
      console.log('task.offProgressUpdate(listener) // 需传入与监听时同一个的函数对象', task.offProgressUpdate(listener))
    }, 300)

  }
})
